package com.uniedp.common.handle;

import com.uniedp.modules.sys.entity.SysDeptEntity;
import com.uniedp.modules.sys.service.handler.SysDeptHandler;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 部门事件实现类
 */
@Component
@Log4j2
public class EdpSysDeptHandler implements SysDeptHandler {
    /**
     * 在部门保存之前
     * @param entity
     * @return 返回true继续保存，返回false取消操作
     */
    @Override
    public boolean onBeforeAdd(SysDeptEntity entity, Map<String, Object> data) {
        // 可在此按照实际业务需求给entity赋值
        // 例如：
        // entity.setCode("123456");

        // 如果取消创建部门可抛出业务异常，或返回 false
        // 例如：throw new NewSailException("code参数不能为空"); // 前台会提示错误信息
        //      return false; // 前台返回成功标识，但部门不会更新
        log.debug("部门修改之前：{}", entity);
        return true;
    }

    /**
     * 在部门保存之后
     * @param entity
     */
    @Override
    public void onAfterAdd(SysDeptEntity entity, Map<String, Object> data) {
        // 可在此实现扩展业务逻辑
    }

    /**
     * 在部门更新之前
     * @param entity
     * @return 返回true继续更新，返回false取消操作
     */
    @Override
    public boolean onBeforeUpdate(SysDeptEntity entity, Map<String, Object> data) {
        // 可在此按照实际业务需求给entity赋值
        // 例如：
        // entity.setCode("123456");

        // 如果取消更新部门可抛出业务异常，或返回 false
        // 例如：
        // throw new NewSailException("code参数不能为空"); // 前台会提示错误信息
        // return false; // 前台返回成功标识，但部门不会更新
        return true;
    }

    /**
     * 在部门更新之后
     * @param entity
     */
    @Override
    public void onAfterUpdate(SysDeptEntity entity, Map<String, Object> data) {
        // 可在此实现扩展业务逻辑
    }

    /**
     * 在部门删除之前
     * @param id 部门Id
     * @return 返回true继续删除，返回false取消操作
     */
    @Override
    public boolean onBeforenDelete(Long id) {
        // 可在此实现扩展业务逻辑

        // 如果取消删除部门可抛出业务异常，或返回 false
        // 例如：
        // throw new NewSailException("此部门不允许删除"); // 前台会提示错误信息
        // return false; // 前台返回成功标识，但部门不会更新
        return true;
    }

    /**
     * 在部门删除之后
     * @param id
     */
    @Override
    public void onAfterDelete(Long id) {
        // 可在此实现扩展业务逻辑
    }
}
